package pms.dao;

import java.util.List;

import org.springframework.orm.hibernate3.HibernateTemplate;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

import pms.om.Rennlaeufer;

/**
 * @author josef@dr-schneeberger.de
 */
public class RennlaeuferDao extends HibernateDaoSupport {
	/**
	 * returns a single rennlaeufer by its primary db key
	 * @param id
	 * @return the Rennlaeufer
	 */
	public Rennlaeufer findById(int id) {
		HibernateTemplate template = getHibernateTemplate();
		return (Rennlaeufer) template.get(Rennlaeufer.class, id);
	}
	
	/**
	 * @return all Rennlaeufer objects from the database.
	 */
	@SuppressWarnings("unchecked")
	public List<Rennlaeufer> findAll() {
		HibernateTemplate template = getHibernateTemplate();
		return template.loadAll(Rennlaeufer.class);
	}

	/**
	 * creates and persists a new Rennlaeufer object.
	 * @param nachname
	 * @param vorname
	 * @param geschlecht
	 * @param telefon
	 * @param dsvnr
	 */
	public void create(String nachname, String vorname, String geschlecht, String telefon, String dsvnr) {
		HibernateTemplate template = getHibernateTemplate();
		Rennlaeufer p = new Rennlaeufer(nachname, vorname, geschlecht, telefon, dsvnr);      
		template.persist(p);
	}

	/**
	 * Modifies an existing persistent Rennlaeufer object.
	 * @param id the primary key used in the database
	 * @param nachname
	 * @param vorname
	 * @param telefon
	 */
	public void modify(int id, String nachname, String vorname, String telefon) {
		HibernateTemplate template = getHibernateTemplate();
		Rennlaeufer p = (Rennlaeufer) template.get(Rennlaeufer.class, id);
		p.setVorname(nachname);
		p.setNachname(vorname);
		p.setTelefon(telefon);
		template.saveOrUpdate(p);
	}

	/**
	 * deletes a rennlaeufer using it's id.
	 * @param id
	 * @throws RennlaeuferDeleteException if the Rennlaeufer is stored in a Fahrt object
	 */
	public void deleteById(int id) throws RennlaeuferDeleteException {
		HibernateTemplate template = getHibernateTemplate();
		Rennlaeufer p = findById(id);
//		Set<Rennen> rennen = p.getRennen();
//		if (rennen == null || rennen.size() == 0) {
			template.delete(p);
//		} else {
//			throw new RennlaeuferDeleteException();
//		}
		template.flush();
	}
}
